package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用 and 连接的 like 'xxx%' 操作
 *
 * @author CKC
 */
public interface ISearchRightQueryCondition extends Serializable {

    /**
     * 右模糊查询,仅支持不同字段and连接,不支持id的模糊查询，eg: searchR[name]=name1 表示 name like 'name1%'
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return null
     */
    @ApiModelProperty(name = "searchR[{field}]", value = "右模糊查询,仅支持不同字段and连接,不支持id的模糊查询，eg: searchR[name]=name1 表示 name like 'name1%' ")
    @JsonIgnore
    default String getSearchRSwaggerView() {
        return null;
    }

    /**
     * getSearchR
     *
     * @return map
     */
    Map<String, String> getSearchR();

    /**
     * setSearchR
     *
     * @param searchR map
     */
    void setSearchR(Map<String, String> searchR);

    /**
     * addSearchR
     *
     * @param field kay
     * @param value value
     */
    default void addSearchR(String field, String value) {
        if (getSearchR() == null) {
            setSearchR(new HashMap<>(8));
        }
        getSearchR().put(field, value);
    }

    /**
     * setSearchR(null)
     *
     */
    default void clearSearchR() {
        setSearchR(null);
    }

    /**
     * isEmptySearchR
     *
     * @return  boolean
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptySearchR() {
        return getSearchR() == null || getSearchR().isEmpty();
    }
}
